SOQL (Salesforce Object Query Language) Salesforce প্ল্যাটফর্মে ডেটা রিট্রাইভ করার জন্য ব্যবহৃত একটি কুয়েরি ভাষা। এটি নির্দিষ্ট অবজেক্টের নির্দিষ্ট ফিল্ডের উপর ভিত্তি করে ডেটা অনুসন্ধান ও রিট্রাইভ করতে সাহায্য করে। SOQL এর সিনট্যাক্স SQL এর মতো, তবে এটি Salesforce-এর অবজেক্ট ও ফিল্ড কাঠামোর সাথে সামঞ্জস্য রেখে তৈরি করা হয়েছে।
SOQL কুয়েরি লেখার জন্য একটি নির্দিষ্ট সিনট্যাক্স অনুসরণ করতে হয়। সাধারণভাবে, একটি SOQL কুয়েরি নির্দিষ্ট অবজেক্টের কিছু নির্দিষ্ট ফিল্ড এবং শর্ত সাপেক্ষে রেকর্ড রিট্রাইভ করে।
SOQL Syntax:
SELECT fields FROM Object WHERE condition ORDER BY field LIMIT number
বেসিক কুয়েরি: Account
অবজেক্ট থেকে Name
এবং Industry
ফিল্ড রিট্রাইভ করা:
SELECT Name, Industry FROM Account
WHERE কন্ডিশন: Account
অবজেক্ট থেকে Industry
যদি Technology
হয় সেই রেকর্ডগুলো রিট্রাইভ করা:
SELECT Name FROM Account WHERE Industry = 'Technology'
ORDER BY ব্যবহার: Account
অবজেক্ট থেকে রেকর্ডগুলো নামের ক্রমানুসারে সাজানো:
SELECT Name FROM Account ORDER BY Name
LIMIT ব্যবহার: কেবলমাত্র প্রথম পাঁচটি রেকর্ড রিট্রাইভ করা:
SELECT Name FROM Account LIMIT 5
Parent-to-Child Relationship: Account
থেকে সম্পর্কিত Contact
রেকর্ড রিট্রাইভ করা:
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
Child-to-Parent Relationship: Contact
থেকে সম্পর্কিত Account
রেকর্ড রিট্রাইভ করা:
SELECT LastName, Account.Name FROM Contact
SOQL কুয়েরি এক্সিকিউট করার জন্য Apex-এ কিছু কুয়েরি মেথড রয়েছে, যা সাধারণত SOQL স্টেটমেন্টের সাথে যুক্ত থাকে। এগুলো Salesforce ডেটাবেজে কুয়েরি চালাতে সাহায্য করে।
Database.query(queryString)
Database.query()
মেথডটি একটি ডায়নামিক SOQL কুয়েরি চালানোর জন্য ব্যবহৃত হয়, যেখানে কুয়েরি স্ট্রিং আকারে প্রদান করা হয়। ডায়নামিক কুয়েরি ব্যবহার করে কুয়েরি স্ট্রিং পরিবর্তন করা যায় এবং নির্দিষ্ট শর্ত বা ভ্যারিয়েবলের উপর ভিত্তি করে কুয়েরি চালানো সম্ভব।
উদাহরণ:
String query = 'SELECT Name FROM Account WHERE Industry = \'Technology\'';
List<Account> accounts = Database.query(query);
for (Account acc : accounts) {
System.debug('Account Name: ' + acc.Name);
}
SOQL For Loop
SOQL For Loop ব্যবহার করে একাধিক রেকর্ড একবারে রিট্রাইভ করা এবং ইটেমগুলো লুপের মাধ্যমে প্রসেস করা যায়। এটি SOQL এর গভর্নর লিমিট মেনে বড় পরিমাণের ডেটা হ্যান্ডল করতে সাহায্য করে।
Syntax:
for (List<SObject> variable : [SOQL query]) {
// Process each batch of records
}
উদাহরণ:
for (List<Account> accountList : [SELECT Name FROM Account]) {
for (Account acc : accountList) {
System.debug('Account Name: ' + acc.Name);
}
}
getQueryLocator(query)
getQueryLocator()
মেথডটি ব্যাপক পরিমাণের ডেটা প্রসেস করার জন্য ব্যবহার করা হয়। এটি ব্যাচ প্রসেসিং এবং পেজিনেশনের জন্য কার্যকরী।
উদাহরণ:
Database.QueryLocator queryLocator = Database.getQueryLocator('SELECT Id, Name FROM Account');
COUNT()
ফাংশনCOUNT()
ফাংশন ব্যবহার করে নির্দিষ্ট শর্তে মোট রেকর্ড সংখ্যা গণনা করা হয়।
উদাহরণ:
Integer accountCount = [SELECT COUNT() FROM Account WHERE Industry = 'Technology'];
System.debug('Total Technology Accounts: ' + accountCount);
Aggregate Functions
SOQL-এ SUM()
, AVG()
, MIN()
, MAX()
ইত্যাদি অ্যাগ্রিগেট ফাংশন ব্যবহার করে গাণিতিক পরিসংখ্যান রিট্রাইভ করা যায়।
উদাহরণ:
AggregateResult[] results = [SELECT SUM(AnnualRevenue) FROM Account WHERE Industry = 'Technology'];
System.debug('Total Annual Revenue: ' + results[0].get('expr0'));
LIMIT
ব্যবহার করা।Database.query()
ব্যবহার করে ডায়নামিক SOQL তৈরি করা।SELECT fields FROM Object WHERE condition ORDER BY field LIMIT number
Database.query()
, SOQL For Loop
, getQueryLocator()
, COUNT()
, এবং অ্যাগ্রিগেট ফাংশন।SOQL এবং Query Methods ব্যবহার করে Apex-এ Salesforce ডেটাবেজ থেকে বিভিন্ন ধরনের ডেটা রিট্রাইভ এবং প্রক্রিয়াকরণ করা যায়, যা ব্যবসায়িক প্রক্রিয়ায় অত্যন্ত সহায়ক।
common.read_more